The present invention is directed to automatic circuit testing and in particular to designing fixtures employed in such testing.
FIGS. 1 and 2 depict a typical automatic-circuit-testing arrangement. An automatic tester 10 applies signals to predetermined points on a circuit board under test 12 and senses the resultant signals at other points. The signals are sent from and received at system terminals 14, which are physically arranged in an array in which the terminal positions are generally independent of the configuration of any individual board to be tested; the tester is intended for use with many types of boards, which must be probed at different places for the proper test. Accordingly, a fixture 16 makes electrical connections between the system-pin positions and the positions of the nodes on the board at which the signals are to be introduced or sensed during the test.
The fixture has system pins 18 so positioned as to enable them to contact a plurality of the system terminals 14 simultaneously, and it also has a plurality of board probes 20 so positioned as simultaneously to contact all of the board nodes at which signals are to be introduced or sensed. The fixture 16 also includes conductors 22 that make the connections between board probes and corresponding system pins.
In operation, a system terminal 14 is connected to, for instance, a driver-sensor 24 or 26, which acts to provide the required stimulus test signal or to sense whether the expected response signal occurs. Instructions for testing of complicated circuit boards take the form of sequences of "vectors," whose components are the logic values applied at or tested for at respective nodes on the board under test. Test-generation programs receive as inputs the board topology and library entries that describe the functions performed by the devices on the board. In response, they produce tests that will propagate to device outputs the symptoms, or "fault effects," of the various faults that the test must be able to detect. Clearly, determination of the series of vectors that will reveal all such faults is not trivial, but test-generation programs have been developed and perform this function more or less routinely.
In the hardware for applying the test vectors, some testers employ a multiplexed arrangement, in which switches 25 selectively connect system resources, such as driver-sensors 24 and 26, to different system pins 14 during different in-circuit tests. The idea of multiplexing arises from the fact that so-called in-circuit testing of complex circuit boards requires a large number of system terminals 14 (or "pins," as they are often called, although they are not in principle required to be elongated in shape). In-circuit testing is the testing of individual components, or groups of them, in their place on the board without testing the function of the entire board. Because a complex board may have many components, most of which need to be subjected to respective in-circuit tests, the number of system pins 14 must be correspondingly large. However, it is not necessary for the tester to include so large a number of system resources, because only a fraction of the pins are active in any single in-circuit test. Multiplexed testers thus tend to be much less expensive than non-multiplexed testers, which must have as many tester resources as there are nodes to be tested.
Clearly, positioning the probes 20 and wiring the conductors 22 must be performed separately for each different type of board to be tested. Although not as complicated as are many of the tasks involved in testing of complex electronic circuits, the provision of such a custom-built fixture presents certain complications when the tester is of the multiplexed variety.
In principle, multiplexing the tester resources does not have to affect the fixture design. In practice, however, it usually does because the switches 25 are ordinarily arranged in a "sparse matrix." In a sparse matrix, any given tester resource, such as driver-sensor 26, is connectable to only a small subset of the pins 14: it is connectable only to the pins in an associated group 30. Conversely, the pins in group 30 are connectable only to driver-sensors 24 and 26: they cannot be connected to other driver-sensors, such as driver-sensors 31 and 32. This situation can give rise to "conflicts" if the correspondence between system contacts 18 and board-side contacts 20 is not chosen judiciously.
To understand the manner in which a conflict can arise, let us suppose that the board nodes contacted by probes 20a and 20b of FIG. 2 must both be driven during the in-circuit test of component U1 and that the fixture 16 is so wired as to connect these probes to the system contacts 18 opposite system pins 14a and 14b. Further suppose that board-side contacts 20a and 20c must both be driven during the in-circuit test of component U2 and that the fixture 16 wires probe 20c to the system-side contact 18 opposite pin 14c. Both of the pin assignments by themselves are acceptable; although pins 20a and 20b would ordinarily have to be separately driven during the in-circuit test of U1, and although pins 20a and 20c would have to be separately driven during the in-circuit test of U2, it is within the tester's capabilities to do so, since the switch matrix 25 can be placed in such a state that driver-sensor 24 is connected to one of those pins while driver-sensor 26 is connected to the other.
But now suppose that the in-circuit test of circuit component U3 requires that probes 20a, 20b, and 20c be driven simultaneously but independently. Driving of board-side contact 20a may be necessary, for instance, to inhibit U2 from applying the U3 a signal inconsistent with that which the tester attempts to apply by means of board-side contact 20c. This results in a conflict with the previous assignment of tester resources (system pins 14a-c) to test nodes 20a-c for the in-circuit tests of components U1 and U2.
To avoid such conflicts, pin-assignment programs are conventionally employed that receive as inputs specifications of the in-circuit tests to be applied to all components on the board. From those test specifications, the pin-assignment program compiles "conflict lists," which are not lists of conflicts but instead are sets of board probes that must be active simultaneously. In ways not relevant here, the pin-assignment program proceeds to find a set of correspondences between board probes and system contacts that, for every conflict list, enables the tester to operate all probes on the list simultaneously. It is only after the pin-assignment program has been run that fixture wiring can begin, and, although not as time-consuming as some other tasks involved in preparing for the manufacture of a product, the length of time that fixture wiring does take can be critical, since it comes at the end of the process. For this reason, some manufacturers invest in non-multiplexed testers, despite their higher cost, in order to avoid the extra delay occasioned by the need to avoid wiring conflicts.